package com.sumer.brain.common.config;

import com.sumer.brain.common.annotation.UserIdArgumentResolver;
import lombok.RequiredArgsConstructor;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.method.support.HandlerMethodArgumentResolver;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

import java.util.List;

/**
 * WebMvcConfigurer的实现类，用于自定义Spring MVC的配置。
 * 通过注入UserIdArgumentResolver，为控制器方法参数绑定用户提供支持。
 */
@RequiredArgsConstructor
@Configuration
public class WebMvcConfiguration implements WebMvcConfigurer {

    /**
     * UserIdArgumentResolver的实例，用于解析方法参数中的@UserId注解。
     */
    private final UserIdArgumentResolver userIdArgumentResolver;

    /**
     * 添加自定义的HandlerMethodArgumentResolver，用于处理@UserId注解的参数。
     *
     * @param resolvers HandlerMethodArgumentResolver的列表，用于解析控制器方法参数。
     */
    @Override
    public void addArgumentResolvers(List<HandlerMethodArgumentResolver> resolvers) {
        // 将UserIdArgumentResolver添加到解析器列表中
        resolvers.add(userIdArgumentResolver);
    }

}